package cn.lizemin.decorator.version3.drink;

/**
 * @author lzm
 * @version 1.0
 * @description: 饮料抽象，用于扩展，比如饮料包含：奈雪，星巴克，水果汁
 * @date 2022/4/13 11:05
 */
public abstract class Drink {

    /**
     * 我的错误点：我一开始习惯性的用private修饰属性，结果导致自己在子类中根本无法使用这个属性，
     * 所以需要将private改成default, 这样子类可以无须声明这个属性，就可使用
     * */
    String description = "UNKNOWN_DRINK";

    public String getDescription() {
        this.cost();
        return description;
    }

    /**
     * 我的错误：一开始我使用了default的修饰符，
     * 后面又改成protected，结果导致装饰者的子类中无法调用这个方法，(就算是装饰者抽象也无法直接调用，因为抽象方法不可被子类直接调用)
     * 必须改成public，装饰者的子类才可以调用该方法,
     * @return 价格
     */
    public abstract double cost();



}
